"""
数据库状态相关路由模块

该模块提供数据库状态监控相关的API端点，用于获取系统中所有数据库的连接状态和性能指标。
所有端点都需要通过JWT令牌进行身份验证，确保只有授权用户可以访问敏感的数据库信息。
支持分页和过滤功能。
"""

from fastapi import APIRouter, Depends, Query
from typing import List, Optional
from app.schemas.database import Database
from app.schemas.user import TokenData
from app.core.security import verify_token
from app.services.database_service import DatabaseService
from app.core.deps import get_db
from sqlalchemy.orm import Session
from app.schemas.response import ApiResponse

router = APIRouter()

@router.get("/", response_model=ApiResponse)
async def get_databases(
    token_data: TokenData = Depends(verify_token),
    db: Session = Depends(get_db),
    skip: int = Query(0, ge=0, description="跳过的记录数"),
    limit: int = Query(100, ge=1, le=1000, description="返回的记录数限制"),
    status: Optional[str] = Query(None, description="按状态过滤")
):
    """获取所有数据库状态端点
    
    返回系统中所有数据库的连接状态和基本性能指标，包括连接数、查询响应时间等。
    支持分页和状态过滤。
    
    Args:
        token_data (TokenData): 从JWT令牌中解析的用户信息，通过依赖注入提供
        db (Session): 数据库会话对象，通过依赖注入提供
        skip (int): 跳过的记录数，默认为0
        limit (int): 返回的记录数限制，默认为100，最大1000
        status (Optional[str]): 按状态过滤数据库
        
    Returns:
        ApiResponse: 包含数据库状态信息列表的响应
    """
    database_service = DatabaseService(db)
    databases = database_service.get_all_databases(skip=skip, limit=limit, status=status)
    return ApiResponse(
        success=True,
        data=databases,
        message="数据库信息获取成功"
    )